#!/usr/bin/env python3

"""
快速测试脚本 - 验证系统是否正常工作
"""

import subprocess
import sys

def run_quick_test():
    """运行快速测试"""
    
    print("🚀 Neural-SLAM 快速测试")
    print("=" * 40)
    
    tests = [
        # {
        #     'name': '环境测试',
        #     'cmd': 'python test_ai2thor_slam.py',
        #     'description': '测试AI2-THOR环境和模型集成'
        # },
        {
            'name': '基线训练测试',
            'cmd': 'python main.py --exp_name test_baseline --num_episodes 2 --max_episode_length 50',
            'description': '快速训练测试（2个episode）'
        },
        {
            'name': '评估模式测试',
            'cmd': 'python main.py --exp_name test_eval --num_episodes 1 --eval 1 --max_episode_length 20',
            'description': '评估模式测试（1个episode）'
        }
    ]
    
    success_count = 0
    
    for i, test in enumerate(tests, 1):
        print(f"\n📋 测试 {i}/{len(tests)}: {test['name']}")
        print(f"📝 描述: {test['description']}")
        print(f"🔧 命令: {test['cmd']}")
        print("-" * 40)
        
        try:
            result = subprocess.run(test['cmd'], shell=True, capture_output=True, text=True, timeout=300)
            
            if result.returncode == 0:
                print(f"✅ {test['name']} - 成功")
                success_count += 1
            else:
                print(f"❌ {test['name']} - 失败")
                print(f"错误输出: {result.stderr[-200:]}")  # 只显示最后200字符
                
        except subprocess.TimeoutExpired:
            print(f"⏰ {test['name']} - 超时")
        except Exception as e:
            print(f"💥 {test['name']} - 异常: {e}")
    
    print("\n" + "=" * 40)
    print("📊 测试结果总结")
    print("=" * 40)
    print(f"✅ 成功: {success_count}/{len(tests)}")
    
    if success_count == len(tests):
        print("🎉 所有测试通过！系统运行正常")
        print("\n💡 下一步:")
        print("   1. 运行完整训练: python complete_workflow.py")
        print("   2. 或运行bash脚本: bash run_experiments.sh")
        return True
    else:
        print("⚠️  部分测试失败，请检查错误信息")
        return False

if __name__ == "__main__":
    success = run_quick_test()
    sys.exit(0 if success else 1)
